package main.java.collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;

/*
    集合之间的操作：并集，交集，差集
 */
public class CollectionDemo3 {
    public static void main(String[] args) {
        //创建集合对象
        Collection c1 = new ArrayList();
        //向集合中添加元素
        c1.add("java");
        c1.add("c++");
        c1.add(".net");
        //输出集合中的元素
        System.out.println("c1:" + c1);

        //创建集合对象
        Collection c2 = new HashSet();
        //向集合中添加元素
        c2.add("android");
        c2.add("ios");
        c2.add("java");
        //输出集合中的元素
        System.out.println("c2:" + c2);


        /*
            boolean addAll(Collection c)
            将给定集合中的所有元素添加到当前集合中，取并集
         */
        //将c2中的元素添加到c1中，输出c1集合中的元素，没有过滤重复元素
        //c1.addAll(c2);
        //将c1中的元素添加到c2中，并且c2中不可重复，将重复的元素过滤掉
        c2.addAll(c1);
        //输出c1集合中的元素
        System.out.println("c1:" + c1);
        //输出c2集合中的元素
        System.out.println("c2:" + c2);


        //创建一个新的集合对象
        Collection c3 = new ArrayList();
        //向集合中添加元素
        c3.add("php");
        c3.add("java");
        c3.add("c++");
        //输出集合C1中的元素
        System.out.println("c1:" + c1);
        //输出集合C3中的元素
        System.out.println("c3:" + c3);
        /*
            retainAll：取交集
            boolean retainAll(collect1on c)
            仅保留当前集合中与给定集合的共有元素
         */
        //将c1与c3的共有元素保留在c1中
        c1.retainAll(c3);
        //输出c1集合中c1和c3共有的元素
        System.out.println("c1:" + c1);
        //单独输出c3集合中的元素
        System.out.println("c3:" + c3);

        /*
            removeAll：差集
            boolean removeAll(collection c)
            从当前集合中删除与给定集合的共有元素
         */
        //创建一个新的集合对象
        Collection c4 = new ArrayList();
        //向集合中添加元素
        c4.add("java");
        c4.add("php");
        c4.add("android");
        //输出集合c2中的元素
        System.out.println("c2:" + c2);
        //输出集合c4中的元素
        System.out.println("c4:" + c4);
        //将c2与c4的共有元素从c2中删除
        c2.removeAll(c4);
        //输出c2集合中c2和c4共有的元素
        System.out.println("c2:" + c2);
        //单独输出c4集合中的元素
        System.out.println("c4:" + c4);

        /*
            containsAll：判断是否包含
            boolean containsAll(Collection c)
         */
        //创建一个新的集合对象
        Collection c5 = new ArrayList();
        //向集合中添加元素
        c5.add("c++");
        c5.add("ios");
        //输出集合c5中的元素
        System.out.println("c5:" + c5);
        //判断集合c2是否包含集合c5中的所有元素
        //c2:[c++, .net, ios]，从上往下执行中c2包含c1中的c++
        boolean containsAll = c2.containsAll(c5);
        //输出判断结果
        System.out.println("c2是否包含c5所有元素:" + containsAll);
    }
}
